/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controlacciones.ejb3.entity;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 *
 * @author vanessa
 */
@Entity
@Table(name = "tb_TipoAccion_ClasificacionAccion_Area")
@NamedQueries({
    @NamedQuery(name = "TbTipoAccionClasificacionAccionArea.findAll", query = "SELECT t FROM TbTipoAccionClasificacionAccionArea t"),
    @NamedQuery(name = "TbTipoAccionClasificacionAccionArea.findByCodClasificacionAccion", query = "SELECT t FROM TbTipoAccionClasificacionAccionArea t WHERE t.tbTipoAccionClasificacionAccionAreaPK.codClasificacionAccion = :codClasificacionAccion"),
    @NamedQuery(name = "TbTipoAccionClasificacionAccionArea.findByCodTipoAccion", query = "SELECT t FROM TbTipoAccionClasificacionAccionArea t WHERE t.tbTipoAccionClasificacionAccionAreaPK.codTipoAccion = :codTipoAccion"),
    @NamedQuery(name = "TbTipoAccionClasificacionAccionArea.findByCodArea", query = "SELECT t FROM TbTipoAccionClasificacionAccionArea t WHERE t.tbTipoAccionClasificacionAccionAreaPK.codArea = :codArea")})
public class TbTipoAccionClasificacionAccionArea implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected TbTipoAccionClasificacionAccionAreaPK tbTipoAccionClasificacionAccionAreaPK;
    @OneToMany(mappedBy = "tbTipoAccionClasificacionAccionArea")
    private Collection<TbAccion> tbAccionCollection;
    @JoinColumn(name = "cod_area", referencedColumnName = "cod_area", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private TbArea tbArea;
    @JoinColumn(name = "cod_clasificacion_accion", referencedColumnName = "cod_clasificacion_accion", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private TbClasificacionAccion tbClasificacionAccion;
    @JoinColumn(name = "cod_tipo_accion", referencedColumnName = "cod_tipo_accion", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private TbTipoAccion tbTipoAccion;

    public TbTipoAccionClasificacionAccionArea() {
    }

    public TbTipoAccionClasificacionAccionArea(TbTipoAccionClasificacionAccionAreaPK tbTipoAccionClasificacionAccionAreaPK) {
        this.tbTipoAccionClasificacionAccionAreaPK = tbTipoAccionClasificacionAccionAreaPK;
    }

    public TbTipoAccionClasificacionAccionArea(String codClasificacionAccion, int codTipoAccion, String codArea) {
        this.tbTipoAccionClasificacionAccionAreaPK = new TbTipoAccionClasificacionAccionAreaPK(codClasificacionAccion, codTipoAccion, codArea);
    }

    public TbTipoAccionClasificacionAccionAreaPK getTbTipoAccionClasificacionAccionAreaPK() {
        return tbTipoAccionClasificacionAccionAreaPK;
    }

    public void setTbTipoAccionClasificacionAccionAreaPK(TbTipoAccionClasificacionAccionAreaPK tbTipoAccionClasificacionAccionAreaPK) {
        this.tbTipoAccionClasificacionAccionAreaPK = tbTipoAccionClasificacionAccionAreaPK;
    }

    public Collection<TbAccion> getTbAccionCollection() {
        return tbAccionCollection;
    }

    public void setTbAccionCollection(Collection<TbAccion> tbAccionCollection) {
        this.tbAccionCollection = tbAccionCollection;
    }

    public TbArea getTbArea() {
        return tbArea;
    }

    public void setTbArea(TbArea tbArea) {
        this.tbArea = tbArea;
    }

    public TbClasificacionAccion getTbClasificacionAccion() {
        return tbClasificacionAccion;
    }

    public void setTbClasificacionAccion(TbClasificacionAccion tbClasificacionAccion) {
        this.tbClasificacionAccion = tbClasificacionAccion;
    }

    public TbTipoAccion getTbTipoAccion() {
        return tbTipoAccion;
    }

    public void setTbTipoAccion(TbTipoAccion tbTipoAccion) {
        this.tbTipoAccion = tbTipoAccion;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (tbTipoAccionClasificacionAccionAreaPK != null ? tbTipoAccionClasificacionAccionAreaPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof TbTipoAccionClasificacionAccionArea)) {
            return false;
        }
        TbTipoAccionClasificacionAccionArea other = (TbTipoAccionClasificacionAccionArea) object;
        if ((this.tbTipoAccionClasificacionAccionAreaPK == null && other.tbTipoAccionClasificacionAccionAreaPK != null) || (this.tbTipoAccionClasificacionAccionAreaPK != null && !this.tbTipoAccionClasificacionAccionAreaPK.equals(other.tbTipoAccionClasificacionAccionAreaPK))) {
            return false;
        }
        return true;
    }

   @Override
    public String toString(){
        String toString = null;
        TbClasificacionAccion clasificacionAccion = this.getTbClasificacionAccion();
        TbTipoAccion tipoAccion = this.getTbTipoAccion();
        toString = tipoAccion.getDescripcion() + "-" + clasificacionAccion.getCodClasificacionAccion() + tipoAccion.getCodTipoAccion()
                + "-" + clasificacionAccion.getDesripcion();
        return toString;
    }

}
